As computers are required to process more tasks simultaneously, the processing overhead for handling such tasks grows. Today, computers employ software processes to decide which tasks will be performed and when they will be performed. When one task completes (or is found to be unable to complete due to an error or a lack of resources), software is notified via an interrupt procedure and the software must then decide upon a next action to be taken. While the interrupt is being processed by the computer, the system may be idle while it waits for new work to be assigned. Once the new task is assigned, it is the responsibility of a task dispatch mechanism to determine when the task will be released for execution. Many such task dispatching systems are required to handle tasks of varying priority and assure that higher priority tasks are executed before lower priority tasks. This function is usually accomplished by software terminating an active task, followed by starting a new higher priority task. In such cases, software is required to interrupt the current task, start the higher priority task and eventually restart the interrupted task. This action may require a number of interrupts to the processor to allow software to handle the task switching. The time required to process these interrupts can create a bottleneck to overall system performance and can become a particularly serious problem in a real time system.
Task dispatching systems are also required to handle situations where a task is running, but additional work is generated which is required to be added to the running task. One of two methods are usually employed to implement such a work addition. The first method requires that a task not be started until it is completely assembled and once the task has commenced execution, no additional work can be added. The other method involves temporarily suspending the execution of the task so that new work may be added. Both methods require that the task execution be delayed, either at the start or during operation, to allow the task to be updated with the additional work.
To enable a task dispatching mechanism to operate in an efficient manner, the prior art has queued tasks for execution into a run list, with the tasks then being executed on an assigned priority basis. To avoid software intervention, the IBM System 370 employed a "1 deep" queue in its task dispatching mechanism. In essence, a logical control block, employed to commence a task dispatch action, was staged immediately after a prior task's control block had been dispatched. Under such conditions, the staged task control block was immediately available upon either completion or stalling of the dispatched prior task.
With the onset of multi-nodal data processing systems, where the nodes are independent processors and operate in parallel to perform a data processing action, it has become increasingly important to enable task dispatch actions to occur with as little software intervention as possible. To assure efficient operation of such multi-nodal data processing systems, the system architecture must assure that overall control is distributed so that no single failure of a node will cause the system to "crash". Of necessity, such a distributed architecture requires substantial levels of data communications between nodes. Unless such data communications are handled in a manner to avoid unnecessary loading of the nodal processors, overall data processing effectiveness of the multi-nodal system suffers.
Accordingly, it is an object of this invention to provide an improved task dispatching method and apparatus for a data processing system.
It is another object of this invention to provide an improved task dispatching method and apparatus which minimizes software and central processor involvement in task dispatching procedures.
It is yet another object of this invention to provide an improved task dispatching method and apparatus which enables units of work to be added to a task being executed without requiring implementation of execution delays.
It is still another object of this invention to provide an improved task dispatching method and apparatus which assures that a highest priority queued task is first executed.